package cn.yunhe.server;

import cn.yunhe.dao.IUserDao;
import cn.yunhe.util.SqlSessionFactoryUtil;
import org.apache.ibatis.session.SqlSession;
import cn.yunhe.entity.User;

import java.util.List;
import java.util.Map;

public class UserServer {

    SqlSession session = SqlSessionFactoryUtil.getSqlSession(); //获取session对象
    IUserDao muserDao = session.getMapper(IUserDao.class); //通过映射获取实例

    /**
     * 用户注册方法
     *
     * @param user 注册的用户对象
     * @return 注册成功返回true 注册失败返回false
     */
    public boolean register(User user) {
        int num = muserDao.register(user);
        if (num > 0) {  //调用注册方法,注册成功返回值大于0,
            session.commit();
            return true;  //返回值改成true,证明注册成功!!
        } else {
            return false; //返回值改成false,证明注册失败// !!
        }
    }

    /**
     * 用户登录验证方法
     *
     * @param user 用户对象
     * @return 用户对象
     */
    public User login(User user) {
        return muserDao.login(user);
    }


    /**
     * 获取所有用户的用户信息
     *
     * @return 用户对象集合
     */
    public List<User> getAllUser() {
        return muserDao.getFlag();  //调用用户查询方法
    }


    /**
     * 检验用户名是否存在
     *
     * @param username
     * @return
     */
    public boolean checkUserName(String username) {
        User user = muserDao.checkUsername(username);
        if (user == null) {
            return false;
        } else {
            return true;
        }
    }

    /**
     * 通过用户Id获取用户全部属性
     *
     * @param uId 用户Id
     * @return 包含全部属性的用户对象
     */
    public User getUserById(int uId) {
        return muserDao.getUserByuId(uId);
    }

    /**
     * 改变用户状态方法
     * @param map 用户对象集合
     *
     * @return 修改结果
     */
    public int changeUserState(Map map){
        int flag =  muserDao.changeUserState(map);
        if (flag>0){
            session.commit();
            return flag;
        }else {
            return flag;
        }
    }

    /**
     * 通过用户名获取用户全部信息
     * @param username
     * @return
     */
    public List<User> getUser(String username){
        return muserDao.getUser(username);
    }

    /**
     * 通过包含用户名和密码的对象获取该用户的全部信息
     * @param user 用户对象
     * @return 包含全部属性的用户对象
     */
    public User getUserByUnamePwd(User user){
        return muserDao.login(user);
    }

}


